1. Technical Field
This invention is generally directed to a file system for use in a computer, embedded controller, or the like. More particularly, this invention is directed to a transaction based file system in which the transaction records of a transaction file of a transaction file system are coalesced based on predetermined criterion.
2. Related Art
Computers, embedded controllers, and other microprocessor based systems are typically constructed from a variety of different hardware components. The hardware components may include a processor, I/O devices, human interface devices, etc. Additionally, such systems use memory storage units to maintain the data used in the system. The memory storage units may take on a variety of different forms including, but not limited to, hard disk drives, floppy disk drives, random access memory, flash memory, etc.
High-level application programs that are executed in such systems must often interact seamlessly with these hardware components, including the memory storage units. To this end, many systems run an operating system that acts as an interface between the application programs and the system hardware. File system software may be included as part of the operating system, or it may be provided as an ancillary software component that interacts with the operating system. In either instance, the file system software organizes the data within the memory storage units for ready access by the processor and the high-level application programs that the processor executes.
There are a number of different file system classifications since there are many ways to implement a file system. For example, a transaction based file system is one in which the file system is always maintained in a consistent state since all updates to the file system structure and the data are logged as transactions to a transaction file. More particularly, all updates to the file system are made as transactions within the transaction file, and the contents of the file system are dynamically re-constituted by successively applying all of the transactions that have been committed.
A transaction in the transaction file is either committed or it has not been completed. If the operation of the file system is interrupted, such as due to a power outage, for example, the state of the file system can be restored by consulting the contents of the transaction file. Any committed transactions are used by the file system, and any transactions that are not complete are rolled back, restoring the file system to the state it was in prior to the attempted update.
Restoration of the file system to a consistent state requires that the file system software execute a predetermined startup process. During a typical startup process, the integrity of each transaction stored in the transaction file is completely verified before it becomes part of the file system. Additional file system operations may also be executed during the startup process. The traditional manner in which transaction verification and other file system operations are performed after a file system interruption, however, is often sub-standard in that the operations are time, process and resource intensive.
Once the file system has been restored to a consistent state, the file system software may operate to continually assure the integrity of the files. This task may be difficult when a large number of transaction records are at issue. Some manner of reducing the burden imposed by this task is desirable.